﻿#include "../lv_examples.h"
#if LV_BUILD_EXAMPLES && LV_USE_SWITCH


static void anim_x_cb(void * var, int32_t v)
{
    lv_obj_set_x(var, v);
    
}

static void anim_size_cb(void * var, int32_t v)
{
    lv_obj_set_size(var, v, v);
    //printf("%d\r\n",v);
}
static lv_anim_timeline_t* anim_timeline = NULL;
static void btn_start_event_handler(lv_event_t* e)
{
    lv_obj_t* btn = lv_event_get_target(e);

    bool reverse = lv_obj_has_state(btn, LV_STATE_CHECKED);
    lv_anim_timeline_set_reverse(anim_timeline, reverse);
    lv_anim_timeline_start(anim_timeline);
   
}

/**
 * Create a playback animation
 */
void lv_example_anim_2(void)
{
   // LV_IMG_DECLARE(bg1);
    lv_obj_t * obj = lv_obj_create(lv_scr_act());
    lv_obj_set_style_radius(obj, LV_RADIUS_CIRCLE, 0);

    lv_obj_set_size(obj, 400, 400);
   // lv_img_set_src(obj, &bg1);
    //lv_obj_set_style_bg_color(obj, lv_palette_main(LV_PALETTE_RED), 0);
    
    LV_IMG_DECLARE(google);
    LV_IMG_DECLARE(apple);
    LV_IMG_DECLARE(github);
    lv_obj_t* img = lv_img_create(obj);
    lv_img_set_src(img, &google);
    lv_obj_align(img, LV_ALIGN_LEFT_MID, 0, 0);

    lv_anim_t a;
    lv_anim_init(&a);
    lv_anim_set_var(&a, img);
    lv_anim_set_values(&a, 10, 64);
    lv_anim_set_time(&a, 1000);

    lv_anim_set_path_cb(&a, lv_anim_path_ease_out);
    lv_anim_set_exec_cb(&a, anim_size_cb);


    lv_anim_t a2;
    lv_anim_init(&a2);
    lv_anim_set_var(&a2, img);
    lv_anim_set_values(&a2, 0, 150);
    lv_anim_set_time(&a2, 1000);
    
    lv_anim_set_exec_cb(&a2, anim_x_cb);
    lv_anim_set_path_cb(&a2, lv_anim_path_overshoot);


    ///////////////////////////////////////////////////
    lv_obj_t* img1 = lv_img_create(obj);
    lv_img_set_src(img1, &github);
    lv_obj_align(img1, LV_ALIGN_LEFT_MID, 0, 0);

    lv_anim_t a3;
    lv_anim_init(&a3);
    lv_anim_set_var(&a3, img1);
    lv_anim_set_values(&a3, 10, 64);
    lv_anim_set_time(&a3, 1000);
    lv_anim_set_path_cb(&a3, lv_anim_path_ease_out);

    lv_anim_set_exec_cb(&a3, anim_size_cb);

    lv_anim_t a4;
    lv_anim_init(&a4);
    lv_anim_set_var(&a4, img1);
    lv_anim_set_values(&a4, 0, 70);
    lv_anim_set_time(&a4, 1000);

    lv_anim_set_exec_cb(&a4, anim_x_cb);
    lv_anim_set_path_cb(&a4, lv_anim_path_overshoot);


    ///////////////////////////////////////////////////
    lv_obj_t* img2 = lv_img_create(obj);
    lv_img_set_src(img2, &apple);
    lv_obj_align(img2, LV_ALIGN_LEFT_MID, 0, 0);

    lv_anim_t a5;
    lv_anim_init(&a5);
    lv_anim_set_var(&a5, img2);
    lv_anim_set_values(&a5, 10, 64);
    lv_anim_set_time(&a5, 1000);
    lv_anim_set_path_cb(&a5, lv_anim_path_ease_out);

    lv_anim_set_exec_cb(&a5, anim_size_cb);

    lv_anim_t a6;
    lv_anim_init(&a6);
    lv_anim_set_var(&a6, img2);
    lv_anim_set_values(&a6, 0, 0);
    lv_anim_set_time(&a6, 1000);

    lv_anim_set_exec_cb(&a6, anim_x_cb);
    lv_anim_set_path_cb(&a6, lv_anim_path_overshoot);

    /* Create anim timeline */
    anim_timeline = lv_anim_timeline_create();
    lv_anim_timeline_add(anim_timeline, 0, &a);
    lv_anim_timeline_add(anim_timeline, 0, &a2);
    
    lv_anim_timeline_add(anim_timeline, 500, &a3);
    lv_anim_timeline_add(anim_timeline, 500, &a4);

    lv_anim_timeline_add(anim_timeline, 1000, &a5);
    lv_anim_timeline_add(anim_timeline, 1000, &a6);
    
    //lv_anim_timeline_start(anim_timeline);

    lv_obj_t* btn_start = lv_btn_create(obj);
    lv_obj_set_style_opa(btn_start, LV_OPA_0, 0);
    lv_obj_add_event_cb(btn_start, btn_start_event_handler, LV_EVENT_VALUE_CHANGED, NULL);
    lv_obj_add_flag(btn_start, LV_OBJ_FLAG_IGNORE_LAYOUT);
    lv_obj_add_flag(btn_start, LV_OBJ_FLAG_CHECKABLE);
    lv_obj_align(btn_start, LV_ALIGN_TOP_MID, 0, 20);

    lv_obj_t* label_start = lv_label_create(btn_start);
    lv_label_set_text(label_start, "Start");
    lv_obj_center(label_start);
    lv_event_send(btn_start, LV_EVENT_VALUE_CHANGED, NULL);
}

#endif
